Personal computers and communication equipment provide for expansion of hardware functionality by the use of expansion buses. An early personal computer expansion bus used in personal computers based on Intel x86 processors was known as the Industry Standard Architecture (ISA) bus. The ISA bus allowed circuit boards to be compatibly added to a personal computer, thereby providing additional functionality. The ISA bus operated at a maximum bus frequency of 8.33 megahertz (MHz) and transferred data over a 16-bit data bus.
As personal computers became more powerful, the 8.33 MHz ISA bus became a bottleneck restricting data transfer between the processor and ISA bus peripherals. Alternative bus structures were developed to supplement or replace the ISA bus. One solution was the Extended Industry Standard Architecture (EISA) bus providing 32-bit data paths and high speed data transfer functions while maintaining backward compatibility with the ISA bus. A competing solution was the Micro-Channel Architecture (MCA) offered by IBM. This bus also offered 32-bit data paths and high speed data transfer functions, but did not maintain backward compatibility with the ISA bus.
As processing speed further increased and microprocessor architectures diversified, a need arose for a high-speed microprocessor independent bus. This need was met by the development of the Peripheral Component Interconnect (PCI) bus. The PCI bus provides a high speed, microprocessor independent bus that can be used to either replace or supplement existing expansion buses. The PCI bus is defined in the Peripheral Component Interconnect Specification, versions 1.0, 2.0 and 2.1 available from the PCI Special Interest Group, Portland, Oreg. PCI buses typically have either a 32-bit data path or a 64bit data path and typically have operating frequencies between 0 MHz and 33 MHz or between 0 MHz and 66 MHz. This enables, for example, a maximum data transfer speed of 133 Mbytes/second for a 32-bit bus operating at 33 MHz and up to 533 Mbytes/second for a 64-bit bus operating at 66 MHz.
In addition to the ISA, MCA, EISA, and PCI buses, numerous other general purpose and special purpose data buses may be present in a computer system. Example data buses include Fiber Channel buses, IEEE 1394 or "Tire Wire" buses, Universal Serial Bus (USB), Small Computer System Interface buses (SCSI), Pentium-Pro processor buses (P6 bus), and various other communication buses. Additionally, a computer system may have more than one data bus and may contain multiple differing buses.
Numerous peripheral devices, also known as "bus agents," may be added to a computer system over the system's data buses. For example, hard disk drives and their controllers, video output devices, audio input and output devices, network interface devices, memory devices, keyboards, photo scanners, magnetic tape controllers, and numerous other devices may be added to the computer system. The performance and flexibility of a computer system is, in part, determined by the ability to connect such devices and by the characteristics of the device connections. Maximum bus data transfer speed, the maximum number of devices that can be connected to a data bus, the overall bus utilization, and the balancing of data traffic across multiple data buses all impact the efficiency of a computer system.
Consequently, a need exists to configure bus characteristics so as to maximize system performance and flexibility.